package util;

import java.util.HashMap;

//这个类用来管理对象的产生
//对象的控制权交给这个类来负责    IOC控制反转
public class MySpring {
	
	//属性  为了存储所有被管理的对象
	private static HashMap<String,Object> beanBox = new HashMap<>();//单例设计模式	
	//获取任何一个类的对象
	//返回值(泛型)  参数String 类名(反射)
	//<T>T返回值是一个泛型，传递啥，就返回啥类型的数据
	public static <T>T getBean(String className) {//传递一个类全名
		T obj = null;
		try {
			obj = (T)beanBox.get(className);
			if(obj==null) {
				//通过类名字获取Class
				Class clazz = Class.forName(className);
				//通过反射产生一个对象
				obj = (T)clazz.newInstance();
				//将新的对象存入集合内
				beanBox.put(className, obj);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return obj;
	}
}
